Dynomotion

Group: DynoMotion Message: 9900 From: Dan Date: 8/4/2014
Subject: Servo Tuning Help
I am hoping someone can give me some insight into a problem I am having.
 
I got my mill up and running this weekend but something is not right. I am running the spiral example G-Code program that comes with the Kflop software.
 
The problem I am having is the spiral movement is jerky and sounds like there is a mechanical binding/clunking like a bad gear box. But my ballscrews are directly coupled to the servo motors and all the supporting bearings are in good condition. Test moves look really good other then a small offset between the commanded and actual (File attached for 1 axis). I know this file may not match the config file below but it is all I have on this computer and are representative of the graphs of my X and Y axes. When I turn the “MaxErr” down to something like 100-400 the axes slows way down and never hits the desired speeds. I have tried to add “I” and “D” to the PID loop and can’t seem to add much of any before things become unstable.
 
Here are 2 videos
 
 
My machine setup
KFLOP + KANALOG
TECO servos configured for analog input speed mode + autotuning enabled
 
 
My machine Initialization file
//X AXIS CONFIGURATION
ch0->InputMode=ENCODER_MODE;
ch0->OutputMode=DAC_SERVO_MODE;
ch0->Vel=595238; //700 IPM RAPID FEED RATE(BASED ON 3999 RPM AND 10,000 CPR ENCODER)
ch0->Accel=10160000; //200 IN/SEC/SEC
ch0->Jerk=4e+007;
ch0->P=0.5;    //BASED ON TESTING
ch0->I=0;
ch0->D=0;
ch0->FFAccel=0;
ch0->FFVel=0;
ch0->MaxI=800;    //GUESTIMATE
ch0->MaxErr=1e+006; // GUESTIMATE WAS 1e+006
ch0->MaxOutput=2040; //LESS THAN 2047 TO PREVENT OVER VOLTAGE TO DRIVE AMP
ch0->DeadBandGain=1;
ch0->DeadBandRange=0;
ch0->InputChan0=0;
ch0->InputChan1=0;
ch0->OutputChan0=0;
ch0->OutputChan1=0;
ch0->MasterAxis=-1;
ch0->LimitSwitchOptions=0x100;
ch0->LimitSwitchNegBit=0;
ch0->LimitSwitchPosBit=0;
ch0->SoftLimitPos=1e+009;
ch0->SoftLimitNeg=-1e+009;
ch0->InputGain0=-1; //NEGATIVE TO MOVE IN THE CORRECT DIRECTION
ch0->InputGain1=1;
ch0->InputOffset0=0;
ch0->InputOffset1=0;
ch0->OutputGain=1;
ch0->OutputOffset=0;
ch0->SlaveGain=1;
ch0->BacklashMode=BACKLASH_OFF;
ch0->BacklashAmount=0;
ch0->BacklashRate=0;
ch0->invDistPerCycle=1;
ch0->Lead=0;
ch0->MaxFollowingError=1000000000;
 
 
ch0->iir[0].B0=1;
ch0->iir[0].B1=0;
ch0->iir[0].B2=0;
ch0->iir[0].A1=0;
ch0->iir[0].A2=0;
 
ch0->iir[1].B0=1;
ch0->iir[1].B1=0;
ch0->iir[1].B2=0;
ch0->iir[1].A1=0;
ch0->iir[1].A2=0;
 
ch0->iir[2].B0=0.000768788;
ch0->iir[2].B1=0.00153758;
ch0->iir[2].B2=0.000768788;
ch0->iir[2].A1=1.92076;
ch0->iir[2].A2=-0.923833;
 
//Y AXIS CONFIGURATION
ch1->InputMode=ENCODER_MODE;
ch1->OutputMode=DAC_SERVO_MODE;
ch1->Vel=595238; //700 IPM RAPID FEED RATE(BASED ON 3999 RPM AND 10,000 CPR ENCODER)
ch1->Accel=10160000; //200 IN/SEC/SEC
ch1->Jerk=4e+007;
ch1->P=0.7; //BASED ON TESTING 0.7 Max from testing
ch1->I=0;
ch1->D=0;
ch1->FFAccel=0;
ch1->FFVel=0;
ch1->MaxI=800;    //GUESTIMATE
ch1->MaxErr=1e+006; //GUESTIMATE WAS1e+006
ch1->MaxOutput=2040; //LESS THAN 2047 TO PREVENT OVER VOLTAGE TO DRIVE AMP
ch1->DeadBandGain=1;
ch1->DeadBandRange=0;
ch1->InputChan0=1;
ch1->InputChan1=0;
ch1->OutputChan0=1;
ch1->OutputChan1=0;
ch1->MasterAxis=-1;
ch1->LimitSwitchOptions=0x100;
ch1->LimitSwitchNegBit=0;
ch1->LimitSwitchPosBit=0;
ch1->SoftLimitPos=1e+009;
ch1->SoftLimitNeg=-1e+009;
ch1->InputGain0=1;    //LEFT AS IS TO GO CORRECT DIRECTION
ch1->InputGain1=1;
ch1->InputOffset0=0;
ch1->InputOffset1=0;
ch1->OutputGain=-1; //NEGATIVE TO CORRECT RUNAWAY CONDITION
ch1->OutputOffset=0;
ch1->SlaveGain=1;
ch1->BacklashMode=BACKLASH_OFF;
ch1->BacklashAmount=0;
ch1->BacklashRate=0;
ch1->invDistPerCycle=1;
ch1->Lead=0;
ch1->MaxFollowingError=1000000000;
 
 
ch1->iir[0].B0=1;
ch1->iir[0].B1=0;
ch1->iir[0].B2=0;
ch1->iir[0].A1=0;
ch1->iir[0].A2=0;
 
ch1->iir[1].B0=1;
ch1->iir[1].B1=0;
ch1->iir[1].B2=0;
ch1->iir[1].A1=0;
ch1->iir[1].A2=0;
 
ch1->iir[2].B0=0.000769;
ch1->iir[2].B1=0.001538;
ch1->iir[2].B2=0.000769;
ch1->iir[2].A1=1.92081;
ch1->iir[2].A2=-0.923885;
 
//Z AXIS CONFIGURATION
ch2->InputMode=ENCODER_MODE;
ch2->OutputMode=DAC_SERVO_MODE;
ch2->Vel=595238; //700 IPM RAPID FEED RATE(BASED ON 3999 RPM AND 10,000 CPR ENCODER)
ch2->Accel=10160000; //200 IN/SEC/SEC
ch2->Jerk=4e+007;
ch2->P=0.58; //***NEEDS TO BE CHANGED
ch2->I=0;
ch2->D=0;
ch2->FFAccel=0;
ch2->FFVel=0;
ch2->MaxI=800;    //GUESTIMATE
ch2->MaxErr=1e+006;  //GUESTIMATE WAS 1e+006
ch2->MaxOutput=2040; //LESS THAN 2047 TO PREVENT OVER VOLTAGE TO DRIVE AMP
ch2->DeadBandGain=1;
ch2->DeadBandRange=0;
ch2->InputChan0=2;
ch2->InputChan1=0;
ch2->OutputChan0=2;
ch2->OutputChan1=0;
ch2->MasterAxis=-1;
ch2->LimitSwitchOptions=0x100;
ch2->LimitSwitchNegBit=0;
ch2->LimitSwitchPosBit=0;
ch2->SoftLimitPos=1e+009;
ch2->SoftLimitNeg=-1e+009;
ch2->InputGain0=1;    //LEFT AS IS TO GO CORRECT DIRECTION
ch2->InputGain1=1;
ch2->InputOffset0=0;
ch2->InputOffset1=0;
ch2->OutputGain=-1; //NEGATIVE TO CORRECT RUNAWAY CONDITION
ch2->OutputOffset=0;
ch2->SlaveGain=1;
ch2->BacklashMode=BACKLASH_OFF;
ch2->BacklashAmount=0;
ch2->BacklashRate=0;
ch2->invDistPerCycle=1;
ch2->Lead=0;
ch2->MaxFollowingError=1000000000;
 
 
ch2->iir[0].B0=1;
ch2->iir[0].B1=0;
ch2->iir[0].B2=0;
ch2->iir[0].A1=0;
ch2->iir[0].A2=0;
 
ch2->iir[1].B0=1;
ch2->iir[1].B1=0;
ch2->iir[1].B2=0;
ch2->iir[1].A1=0;
ch2->iir[1].A2=0;
 
ch2->iir[2].B0=0.000769;
ch2->iir[2].B1=0.001538;
ch2->iir[2].B2=0.000769;
ch2->iir[2].A1=1.92081;
ch2->iir[2].A2=-0.923885;
  @@attachment@@
Group: DynoMotion Message: 9902 From: Tom Kerekes Date: 8/4/2014
Subject: Re: Servo Tuning Help [1 Attachment]
Hi Dan,

It is hard to hear or see a problem from those videos.  But the first step would be to properly tune the axes and determine your systems limitations before attempting to run GCode.

It is important to tell us the actual parameters used when making a plot.

Basically I suspect your accelerations and velocities are too high for your system.  Your velocity setting is 595238 counts/sec but the test move you include only tests about half that speed.  And it can't even reach that speed because the output clips at 800 DAC counts and begins to fall behind the trajectory.

Acceleration of 200 in/sec2 is 1/2G and is quite aggressive for most any system.  Doesn't seem like that is what is being tested.  It is also important to understand the difference between Jerk limited motion and unlimited Jerk motion.  It may be fine to have 1/2 G applied gradually over 1/4 second (with your Jerk setting of 4e7) for long Rapid G0 moves, but undesirable to be applied instantly with coordinated motion moves with short segments (ie spiral test).  So you should decide on two different Velocity and Acceleration Limits for your system.  One set with a lower Jerk setting and one with virtually infinite Jerk (set to 1000X the acceleration).

Following errors exceed 1000 counts.  Is that acceptable for you?

What type of filter did you add?

Regards
TK







 






From: "'Dan' engnerdan@... [DynoMotion]" <DynoMotion@yahoogroups.com>
To: DynoMotion@yahoogroups.com
Sent: Monday, August 4, 2014 5:04 AM
Subject: [DynoMotion] Servo Tuning Help [1 Attachment]

 
[Attachment(s) from Dan included below]
I am hoping someone can give me some insight into a problem I am having.
 
I got my mill up and running this weekend but something is not right. I am running the spiral example G-Code program that comes with the Kflop software.
 
The problem I am having is the spiral movement is jerky and sounds like there is a mechanical binding/clunking like a bad gear box. But my ballscrews are directly coupled to the servo motors and all the supporting bearings are in good condition. Test moves look really good other then a small offset between the commanded and actual (File attached for 1 axis). I know this file may not match the config file below but it is all I have on this computer and are representative of the graphs of my X and Y axes. When I turn the “MaxErr” down to something like 100-400 the axes slows way down and never hits the desired speeds. I have tried to add “I” and “D” to the PID loop and can’t seem to add much of any before things become unstable.
 
Here are 2 videos
 
 
My machine setup
KFLOP + KANALOG
TECO servos configured for analog input speed mode + autotuning enabled
 
 
My machine Initialization file
//X AXIS CONFIGURATION
ch0->InputMode=ENCODER_MODE;
ch0->OutputMode=DAC_SERVO_MODE;
ch0->Vel=595238; //700 IPM RAPID FEED RATE(BASED ON 3999 RPM AND 10,000 CPR ENCODER)
ch0->Accel=10160000; //200 IN/SEC/SEC
ch0->Jerk=4e+007;
ch0->P=0.5;    //BASED ON TESTING
ch0->I=0;
ch0->D=0;
ch0->FFAccel=0;
ch0->FFVel=0;
ch0->MaxI=800;    //GUESTIMATE
ch0->MaxErr=1e+006; // GUESTIMATE WAS 1e+006
ch0->MaxOutput=2040; //LESS THAN 2047 TO PREVENT OVER VOLTAGE TO DRIVE AMP
ch0->DeadBandGain=1;
ch0->DeadBandRange=0;
ch0->InputChan0=0;
ch0->InputChan1=0;
ch0->OutputChan0=0;
ch0->OutputChan1=0;
ch0->MasterAxis=-1;
ch0->LimitSwitchOptions=0x100;
ch0->LimitSwitchNegBit=0;
ch0->LimitSwitchPosBit=0;
ch0->SoftLimitPos=1e+009;
ch0->SoftLimitNeg=-1e+009;
ch0->InputGain0=-1; //NEGATIVE TO MOVE IN THE CORRECT DIRECTION
ch0->InputGain1=1;
ch0->InputOffset0=0;
ch0->InputOffset1=0;
ch0->OutputGain=1;
ch0->OutputOffset=0;
ch0->SlaveGain=1;
ch0->BacklashMode=BACKLASH_OFF;
ch0->BacklashAmount=0;
ch0->BacklashRate=0;
ch0->invDistPerCycle=1;
ch0->Lead=0;
ch0->MaxFollowingError=1000000000;
 
 
ch0->iir[0].B0=1;
ch0->iir[0].B1=0;
ch0->iir[0].B2=0;
ch0->iir[0].A1=0;
ch0->iir[0].A2=0;
 
ch0->iir[1].B0=1;
ch0->iir[1].B1=0;
ch0->iir[1].B2=0;
ch0->iir[1].A1=0;
ch0->iir[1].A2=0;
 
ch0->iir[2].B0=0.000768788;
ch0->iir[2].B1=0.00153758;
ch0->iir[2].B2=0.000768788;
ch0->iir[2].A1=1.92076;
ch0->iir[2].A2=-0.923833;
 
//Y AXIS CONFIGURATION
ch1->InputMode=ENCODER_MODE;
ch1->OutputMode=DAC_SERVO_MODE;
ch1->Vel=595238; //700 IPM RAPID FEED RATE(BASED ON 3999 RPM AND 10,000 CPR ENCODER)
ch1->Accel=10160000; //200 IN/SEC/SEC
ch1->Jerk=4e+007;
ch1->P=0.7; //BASED ON TESTING 0.7 Max from testing
ch1->I=0;
ch1->D=0;
ch1->FFAccel=0;
ch1->FFVel=0;
ch1->MaxI=800;    //GUESTIMATE
ch1->MaxErr=1e+006; //GUESTIMATE WAS1e+006
ch1->MaxOutput=2040; //LESS THAN 2047 TO PREVENT OVER VOLTAGE TO DRIVE AMP
ch1->DeadBandGain=1;
ch1->DeadBandRange=0;
ch1->InputChan0=1;
ch1->InputChan1=0;
ch1->OutputChan0=1;
ch1->OutputChan1=0;
ch1->MasterAxis=-1;
ch1->LimitSwitchOptions=0x100;
ch1->LimitSwitchNegBit=0;
ch1->LimitSwitchPosBit=0;
ch1->SoftLimitPos=1e+009;
ch1->SoftLimitNeg=-1e+009;
ch1->InputGain0=1;    //LEFT AS IS TO GO CORRECT DIRECTION
ch1->InputGain1=1;
ch1->InputOffset0=0;
ch1->InputOffset1=0;
ch1->OutputGain=-1; //NEGATIVE TO CORRECT RUNAWAY CONDITION
ch1->OutputOffset=0;
ch1->SlaveGain=1;
ch1->BacklashMode=BACKLASH_OFF;
ch1->BacklashAmount=0;
ch1->BacklashRate=0;
ch1->invDistPerCycle=1;
ch1->Lead=0;
ch1->MaxFollowingError=1000000000;
 
 
ch1->iir[0].B0=1;
ch1->iir[0].B1=0;
ch1->iir[0].B2=0;
ch1->iir[0].A1=0;
ch1->iir[0].A2=0;
 
ch1->iir[1].B0=1;
ch1->iir[1].B1=0;
ch1->iir[1].B2=0;
ch1->iir[1].A1=0;
ch1->iir[1].A2=0;
 
ch1->iir[2].B0=0.000769;
ch1->iir[2].B1=0.001538;
ch1->iir[2].B2=0.000769;
ch1->iir[2].A1=1.92081;
ch1->iir[2].A2=-0.923885;
 
//Z AXIS CONFIGURATION
ch2->InputMode=ENCODER_MODE;
ch2->OutputMode=DAC_SERVO_MODE;
ch2->Vel=595238; //700 IPM RAPID FEED RATE(BASED ON 3999 RPM AND 10,000 CPR ENCODER)
ch2->Accel=10160000; //200 IN/SEC/SEC
ch2->Jerk=4e+007;
ch2->P=0.58; //***NEEDS TO BE CHANGED
ch2->I=0;
ch2->D=0;
ch2->FFAccel=0;
ch2->FFVel=0;
ch2->MaxI=800;    //GUESTIMATE
ch2->MaxErr=1e+006;  //GUESTIMATE WAS 1e+006
ch2->MaxOutput=2040; //LESS THAN 2047 TO PREVENT OVER VOLTAGE TO DRIVE AMP
ch2->DeadBandGain=1;
ch2->DeadBandRange=0;
ch2->InputChan0=2;
ch2->InputChan1=0;
ch2->OutputChan0=2;
ch2->OutputChan1=0;
ch2->MasterAxis=-1;
ch2->LimitSwitchOptions=0x100;
ch2->LimitSwitchNegBit=0;
ch2->LimitSwitchPosBit=0;
ch2->SoftLimitPos=1e+009;
ch2->SoftLimitNeg=-1e+009;
ch2->InputGain0=1;    //LEFT AS IS TO GO CORRECT DIRECTION
ch2->InputGain1=1;
ch2->InputOffset0=0;
ch2->InputOffset1=0;
ch2->OutputGain=-1; //NEGATIVE TO CORRECT RUNAWAY CONDITION
ch2->OutputOffset=0;
ch2->SlaveGain=1;
ch2->BacklashMode=BACKLASH_OFF;
ch2->BacklashAmount=0;
ch2->BacklashRate=0;
ch2->invDistPerCycle=1;
ch2->Lead=0;
ch2->MaxFollowingError=1000000000;
 
 
ch2->iir[0].B0=1;
ch2->iir[0].B1=0;
ch2->iir[0].B2=0;
ch2->iir[0].A1=0;
ch2->iir[0].A2=0;
 
ch2->iir[1].B0=1;
ch2->iir[1].B1=0;
ch2->iir[1].B2=0;
ch2->iir[1].A1=0;
ch2->iir[1].A2=0;
 
ch2->iir[2].B0=0.000769;
ch2->iir[2].B1=0.001538;
ch2->iir[2].B2=0.000769;
ch2->iir[2].A1=1.92081;
ch2->iir[2].A2=-0.923885;


Group: DynoMotion Message: 9906 From: Dan Date: 8/5/2014
Subject: Re: Servo Tuning Help
Tom,
Here are a complete set of accurate output files, both from the step response screen and the bode plot screen. Along with my initialization file and a video of the mill running. Now I realize as I listen to it the jerking did not come through audibly. But after making the changes below the problem is worse (louder, harder jerking)
 
 
The changes I made,
1. I turned the jerk down to 1e007
2. Acceleration for rapids to 250 in/sec/sec
3. Velocity for rapids (in the int file) is set to 400 ipm
4. Acceleration for milling to 100 in/sec/sec
5. Velocity for milling to max at 400 ipm
6. I shut off auto tuning on my servo drives, it was the only way to get the commanded move and actual move lines to lay on top of each other.
 
To me it seems like when the g-code (milling portion) is executing there is no S curve to the acceleration. Its like it is hard short accelerations of a trapazoid movement.
 
 
So you mention having two different jerk settings, one for rapid moves and one for machining moves. How would I set the 2 different jerk settings? The one in the initialization file is for rapid moves but there is not a jerk setting in the trajectory planner for machining moves.
 
Dan
 
Sent: Monday, August 04, 2014 9:44 AM
Subject: Re: [DynoMotion] Servo Tuning Help
 
 

Hi Dan,

It is hard to hear or see a problem from those videos.  But the first step would be to properly tune the axes and determine your systems limitations before attempting to run GCode.

It is important to tell us the actual parameters used when making a plot.

Basically I suspect your accelerations and velocities are too high for your system.  Your velocity setting is 595238 counts/sec but the test move you include only tests about half that speed.  And it can't even reach that speed because the output clips at 800 DAC counts and begins to fall behind the trajectory.
 
Acceleration of 200 in/sec2 is 1/2G and is quite aggressive for most any system.  Doesn't seem like that is what is being tested.  It is also important to understand the difference between Jerk limited motion and unlimited Jerk motion.  It may be fine to have 1/2 G applied gradually over 1/4 second (with your Jerk setting of 4e7) for long Rapid G0 moves, but undesirable to be applied instantly with coordinated motion moves with short segments (ie spiral test).  So you should decide on two different Velocity and Acceleration Limits for your system.  One set with a lower Jerk setting and one with virtually infinite Jerk (set to 1000X the acceleration).
 
Following errors exceed 1000 counts.  Is that acceptable for you?
 
What type of filter did you add?
 
Regards
TK
 
 
 
 
 
 
 
 




 
Group: DynoMotion Message: 9911 From: Tom Kerekes Date: 8/5/2014
Subject: Re: Servo Tuning Help [8 Attachments]
Hi Dan,

Again the quality of the audio/video isn't really adequate for me to tell anything.

Coordinated motion does not have Jerk limitation.  That is why there is no Jerk setting in the Trajectory Planner.  This is why you should temporarily test with infinite Jerk (1000X Acceleration) to observe how your system performs with full acceleration commanded instantly.

Your test plot is now testing your maximum velocity but not your maximum acceleration setting.  With such a low Jerk setting it would take 1.27 seconds to gradually ramp the acceleration up to your full acceleration.  But your maximum velocity is achieved in ~ 0.3 seconds.  So the motion is completely Jerk limited (triangle shaped acceleration).  You can also observe this by zooming in on the Velocity plot and observe that the velocity is completely "S" shaped rather than a ramp with rounded corners.  The acceleration ramps up for ~0.15 seconds and then back down for ~0.15 seconds.  So the acceleration will never be more than ~ 1/10th of your max setting.  Jerk limited motion may be a desired manner to operate but you should be aware that your acceleration is really only ~ 25in/sec2 so do not instruct the Trajectory Planner to use more than this value.

Regarding the Trajectory Planner Settings: Break angle is too small.  Break Angle is the value where a complete stop should be made. Something like the Spiral GCode is made up of line segments with small changes in direction on the order of several degrees.  So Break Angle should be set to something like 20 degrees so continuous velocity will be performed through the "corners".  Facet Angle is also way too small.  Use a value of 1 degree or higher to avoid too many microscopic segments to be inserted to "round" the corners.

Regards
TK




Group: DynoMotion Message: 9919 From: Wcarrothers Yahoo Date: 8/6/2014
Subject: Re: Servo Tuning Help
I know this is perhaps a difficult question.  

But always wondered for say a good sized 4x8' cnc router mill. What are the typical velocity in/sec and accel in/sec which are common for maybe a moderate speed/performance mill and what would they be for high performance one?  

Just wondering what category I'm in these days with machines

B



On Aug 5, 2014, at 1:40 PM, "Tom Kerekes tk@... [DynoMotion]" <DynoMotion@yahoogroups.com> wrote:

 

Hi Dan,

Again the quality of the audio/video isn't really adequate for me to tell anything.

Coordinated motion does not have Jerk limitation.  That is why there is no Jerk setting in the Trajectory Planner.  This is why you should temporarily test with infinite Jerk (1000X Acceleration) to observe how your system performs with full acceleration commanded instantly.

Your test plot is now testing your maximum velocity but not your maximum acceleration setting.  With such a low Jerk setting it would take 1.27 seconds to gradually ramp the acceleration up to your full acceleration.  But your maximum velocity is achieved in ~ 0.3 seconds.  So the motion is completely Jerk limited (triangle shaped acceleration).  You can also observe this by zooming in on the Velocity plot and observe that the velocity is completely "S" shaped rather than a ramp with rounded corners.  The acceleration ramps up for ~0.15 seconds and then back down for ~0.15 seconds.  So the acceleration will never be more than ~ 1/10th of your max setting.  Jerk limited motion may be a desired manner to operate but you should be aware that your acceleration is really only ~ 25in/sec2 so do not instruct the Trajectory Planner to use more than this value.

Regarding the Trajectory Planner Settings: Break angle is too small.  Break Angle is the value where a complete stop should be made. Something like the Spiral GCode is made up of line segments with small changes in direction on the order of several degrees.  So Break Angle should be set to something like 20 degrees so continuous velocity will be performed through the "corners".  Facet Angle is also way too small.  Use a value of 1 degree or higher to avoid too many microscopic segments to be inserted to "round" the corners.

Regards
TK




Group: DynoMotion Message: 9922 From: Andy Sontag Date: 8/6/2014
Subject: Re: Servo Tuning Help
B,

I'd consider our 4' x 8' cnc router to be in the moderate range and we have our X and Y velocity set at 10 in/sec and acceleration at 20 in/sec^2. 

We have the first generation CRP Pro kit with a kflop, snapamps, PrimoPal Nema 34 steppers, and CUI AMT11 encoders. The Y moves cleanly at 20 in/sec with encoder error less than .001", although X for some reason develops a nasty resonance at around 12 in/sec. We'll be switching over to the current CRP Pro Gen 2 parts at some point in the future which is suppose to stiffen the gantry up and hopefully avoid the X resonance at high speed. If the new parts work as advertised we should be able to set the X & Y at 20 in/sec and maybe increase acceleration, although it moves pretty quickly already. We're mainly interested in improving rigidity.

I'd expect a high performance, high $$ cnc router would probably have double the velocity and acceleration, so maybe 40 in/sec and 40 in/sec^2?

Andy


On Wed, Aug 6, 2014 at 12:11 PM, Wcarrothers Yahoo wcarrothers@... [DynoMotion] <DynoMotion@yahoogroups.com> wrote:
 

I know this is perhaps a difficult question.  

But always wondered for say a good sized 4x8' cnc router mill. What are the typical velocity in/sec and accel in/sec which are common for maybe a moderate speed/performance mill and what would they be for high performance one?  

Just wondering what category I'm in these days with machines

B



On Aug 5, 2014, at 1:40 PM, "Tom Kerekes tk@... [DynoMotion]" <DynoMotion@yahoogroups.com> wrote:

 

Hi Dan,

Again the quality of the audio/video isn't really adequate for me to tell anything.

Coordinated motion does not have Jerk limitation.  That is why there is no Jerk setting in the Trajectory Planner.  This is why you should temporarily test with infinite Jerk (1000X Acceleration) to observe how your system performs with full acceleration commanded instantly.

Your test plot is now testing your maximum velocity but not your maximum acceleration setting.  With such a low Jerk setting it would take 1.27 seconds to gradually ramp the acceleration up to your full acceleration.  But your maximum velocity is achieved in ~ 0.3 seconds.  So the motion is completely Jerk limited (triangle shaped acceleration).  You can also observe this by zooming in on the Velocity plot and observe that the velocity is completely "S" shaped rather than a ramp with rounded corners.  The acceleration ramps up for ~0.15 seconds and then back down for ~0.15 seconds.  So the acceleration will never be more than ~ 1/10th of your max setting.  Jerk limited motion may be a desired manner to operate but you should be aware that your acceleration is really only ~ 25in/sec2 so do not instruct the Trajectory Planner to use more than this value.

Regarding the Trajectory Planner Settings: Break angle is too small.  Break Angle is the value where a complete stop should be made. Something like the Spiral GCode is made up of line segments with small changes in direction on the order of several degrees.  So Break Angle should be set to something like 20 degrees so continuous velocity will be performed through the "corners".  Facet Angle is also way too small.  Use a value of 1 degree or higher to avoid too many microscopic segments to be inserted to "round" the corners.

Regards
TK